load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
load("@io_bazel_rules_go//proto:compiler.bzl", "go_proto_compiler")

package(default_visibility = ["//visibility:private"])

go_library(
    name = "protoc-gen-grpc-gateway_lib",
    srcs = ["main.go"],
    importpath = "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway",
    deps = [
        "//internal/codegenerator",
        "//internal/descriptor",
        "//protoc-gen-grpc-gateway/internal/gengateway",
        "@org_golang_google_grpc//grpclog",
        "@org_golang_google_protobuf//compiler/protogen",
    ],
)

go_binary(
    name = "protoc-gen-grpc-gateway",
    embed = [":protoc-gen-grpc-gateway_lib"],
    visibility = ["//visibility:public"],
)

go_proto_compiler(
    name = "go_gen_grpc_gateway",
    plugin = ":protoc-gen-grpc-gateway",
    suffix = ".pb.gw.go",
    visibility = ["//visibility:public"],
    deps = [
        "//runtime:go_default_library",
        "//utilities:go_default_library",
        "@org_golang_google_grpc//grpclog:go_default_library",
        "@org_golang_google_grpc//metadata:go_default_library",
    ],
)

go_proto_compiler(
    name = "go_gen_grpc_gateway_opaque",
    options = [
        "paths=source_relative",
        "use_opaque_api=true",
    ],
    plugin = ":protoc-gen-grpc-gateway",
    suffix = ".pb.gw.go",
    visibility = ["//visibility:public"],
    deps = [
        "//runtime:go_default_library",
        "//utilities:go_default_library",
        "@org_golang_google_grpc//grpclog:go_default_library",
        "@org_golang_google_grpc//metadata:go_default_library",
    ],
)
